
********FULL PERIOD********
use "$jfqa_rep/20_Stock_Setup.dta", clear

qui{
drop if missing(convexity_split)
drop if missing(futexcess)

drop if year<1963
drop if year==1963 & month<6

drop if year>2022
drop if year==2022 & month==12

*convexity split rank
gen convex_five=.
sort monthyear convexity_split
by monthyear: replace convex_five=1 if _n<_N/5
by monthyear: replace convex_five=2 if _n>=_N/5 & _n<_N/5*2
by monthyear: replace convex_five=3 if _n>=_N/5*2 & _n<_N/5*3 
by monthyear: replace convex_five=4 if _n>=_N/5*3 & _n<_N/5*4
by monthyear: replace convex_five=5 if _n>=_N/5*4

replace futexcess=futexcess*100

egen vw_excess=wtmean(futexcess),  weight(mktcap) by(monthyear convex_five)

*consolidate to one observation per month
sort convex_five monthyear 
collapse vw_excess, by(convex_five monthyear)

tsset convex_five monthyear  

sort  convex_five monthyear

keep if convex_five==1 | convex_five==5

sort monthyear convex_five

gen vw_excess_dif=vw_excess-vw_excess[_n+1] if convex_five==1

keep if convex_five==1

sort  convex_five monthyear

egen std_vw=sd(vw_excess_dif)

egen mean_ret_vw=mean(vw_excess_dif) 

gen sharpe_vw=mean_ret_vw/std_vw 

egen skew_ret_vw=skew(vw_excess_dif)

egen kurt_ret_vw=kurt(vw_excess_dif)
}

newey vw_excess_dif , lag(6)

sum std_vw sharpe skew kurt



********FIRST HALF*******
use "$jfqa_rep/20_Stock_Setup.dta", clear

qui{
drop if missing(convexity_split)
drop if missing(futexcess)

drop if year<1963
drop if year==1963 & month<6

drop if year>2022
drop if year==2022 & month==12

drop if year>1992
drop if year==1992 & month==12


*convexity split rank
gen convex_five=.
sort monthyear convexity_split
by monthyear: replace convex_five=1 if _n<_N/5
by monthyear: replace convex_five=2 if _n>=_N/5 & _n<_N/5*2
by monthyear: replace convex_five=3 if _n>=_N/5*2 & _n<_N/5*3 
by monthyear: replace convex_five=4 if _n>=_N/5*3 & _n<_N/5*4
by monthyear: replace convex_five=5 if _n>=_N/5*4

replace futexcess=futexcess*100

egen vw_excess=wtmean(futexcess),  weight(mktcap) by(monthyear convex_five)

*consolidate to one observation per month
sort convex_five monthyear 
collapse vw_excess, by(convex_five monthyear)

tsset convex_five monthyear  

sort  convex_five monthyear

keep if convex_five==1 | convex_five==5

sort monthyear convex_five

gen vw_excess_dif=vw_excess-vw_excess[_n+1] if convex_five==1

keep if convex_five==1

sort  convex_five monthyear

egen std_vw=sd(vw_excess_dif)

egen mean_ret_vw=mean(vw_excess_dif) 

gen sharpe_vw=mean_ret_vw/std_vw 

egen skew_ret_vw=skew(vw_excess_dif)

egen kurt_ret_vw=kurt(vw_excess_dif)
}

newey vw_excess_dif , lag(6)

sum std_vw sharpe skew kurt




********SECOND HALF*******
use "$jfqa_rep/20_Stock_Setup.dta", clear

qui{
drop if missing(convexity_split)
drop if missing(futexcess)

drop if year<1963
drop if year==1963 & month<6

drop if year>2022
drop if year==2022 & month==12

drop if year<1992
drop if year==1992 & month<12

*convexity split rank
gen convex_five=.
sort monthyear convexity_split
by monthyear: replace convex_five=1 if _n<_N/5
by monthyear: replace convex_five=2 if _n>=_N/5 & _n<_N/5*2
by monthyear: replace convex_five=3 if _n>=_N/5*2 & _n<_N/5*3 
by monthyear: replace convex_five=4 if _n>=_N/5*3 & _n<_N/5*4
by monthyear: replace convex_five=5 if _n>=_N/5*4

replace futexcess=futexcess*100

egen vw_excess=wtmean(futexcess),  weight(mktcap) by(monthyear convex_five)

*consolidate to one observation per month
sort convex_five monthyear 
collapse vw_excess, by(convex_five monthyear)

tsset convex_five monthyear  

sort  convex_five monthyear

keep if convex_five==1 | convex_five==5

sort monthyear convex_five

gen vw_excess_dif=vw_excess-vw_excess[_n+1] if convex_five==1

keep if convex_five==1

sort  convex_five monthyear

egen std_vw=sd(vw_excess_dif)

egen mean_ret_vw=mean(vw_excess_dif) 

gen sharpe_vw=mean_ret_vw/std_vw 

egen skew_ret_vw=skew(vw_excess_dif)

egen kurt_ret_vw=kurt(vw_excess_dif)
}

newey vw_excess_dif , lag(6)

sum std_vw sharpe skew kurt
